/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package GUI;

import Logik.Medienquelle;
import Logik.Medium;
import Logik.Kunde;
import Logik.Kundenquelle;
import Logik.RueckgabeAusleihe;
import java.util.List;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.Iterator;

/**
 * Beinhaltet Ausleihen-/Rückgabefenster und die jeweiligen Events
 * @author Sebastian Weißenbacher
 */
public class Aus_RueckGUI extends javax.swing.JFrame {

    /**
     * Creates new form Aus_RueckGUI
     */
    public Aus_RueckGUI() {
        initComponents();
    }
    Interfaces.Medienverwaltung mv = new Medienquelle();
    Interfaces.Kundenverwaltung kv = new Kundenquelle();
    List<Medium> list = mv.getListe();
    List<Kunde> kml = kv.anzeigen();
    SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy");

    /**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        tab_aus_rueck = new javax.swing.JTabbedPane();
        pan_aus = new javax.swing.JPanel();
        lbl_aus_kundennummer = new javax.swing.JLabel();
        txt_aus_kundennummer = new javax.swing.JTextField();
        lbl_aus_artikelnummer = new javax.swing.JLabel();
        txt_aus_artikelnummer = new javax.swing.JTextField();
        jScrollPane2 = new javax.swing.JScrollPane();
        list_aus_medienliste = new javax.swing.JList();
        lbl_aus_nachname = new javax.swing.JLabel();
        txt_aus_name = new javax.swing.JTextField();
        lbl_aus_geburtsdatum = new javax.swing.JLabel();
        txt_aus_gebdatum = new javax.swing.JTextField();
        but_aus_ausleihen = new javax.swing.JButton();
        but_aus_suchen = new javax.swing.JButton();
        but_aus_zurueck = new javax.swing.JButton();
        jScrollPane5 = new javax.swing.JScrollPane();
        list_aus_kundenliste = new javax.swing.JList();
        lbl_aus_kundenliste = new javax.swing.JLabel();
        lbl_aus_medienliste = new javax.swing.JLabel();
        pan_rueck = new javax.swing.JPanel();
        lbl_rueck_kundennummer = new javax.swing.JLabel();
        txt_rueck_kundennummer = new javax.swing.JTextField();
        lbl_rueck_name = new javax.swing.JLabel();
        txt_rueck_name = new javax.swing.JTextField();
        lbl_rueck_gebdatum = new javax.swing.JLabel();
        txt_rueck_gebdatum = new javax.swing.JTextField();
        but_rueck_rueckgabe = new javax.swing.JButton();
        jScrollPane3 = new javax.swing.JScrollPane();
        list_rueck_kundenliste = new javax.swing.JList();
        jScrollPane4 = new javax.swing.JScrollPane();
        list_rueck_medienliste = new javax.swing.JList();
        but_rueck_suchen = new javax.swing.JButton();
        but_rueck_zurueck = new javax.swing.JButton();
        lbl_rueck_kundenliste = new javax.swing.JLabel();
        lbl_rueck_medienliste = new javax.swing.JLabel();
        jLabel1 = new javax.swing.JLabel();

        setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
        setTitle("Ausleihen/Rückgabe");

        tab_aus_rueck.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                tab_aus_rueckMouseClicked(evt);
            }
        });

        lbl_aus_kundennummer.setText("Kundennummer:");

        lbl_aus_artikelnummer.setText("Artikelnummer:");

        list_aus_medienliste.setModel(new MediaListModel(list));
        list_aus_medienliste.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);
        list_aus_medienliste.setPreferredSize(null);
        jScrollPane2.setViewportView(list_aus_medienliste);

        lbl_aus_nachname.setText("Vor- und Nachname:");

        lbl_aus_geburtsdatum.setText("Geburtsdatum:");

        but_aus_ausleihen.setText("Ausleihen");
        but_aus_ausleihen.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                but_aus_ausleihenMouseClicked(evt);
            }
        });

        but_aus_suchen.setText("Suchen Knr.");
        but_aus_suchen.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                but_aus_suchenMouseClicked(evt);
            }
        });

        but_aus_zurueck.setText("Zurück");
        but_aus_zurueck.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                but_aus_zurueckMouseClicked(evt);
            }
        });

        list_aus_kundenliste.setModel(new KundeListModel(kml));
        list_aus_kundenliste.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);
        jScrollPane5.setViewportView(list_aus_kundenliste);

        lbl_aus_kundenliste.setText("Kundenliste:");

        lbl_aus_medienliste.setText("Medienliste:");

        javax.swing.GroupLayout pan_ausLayout = new javax.swing.GroupLayout(pan_aus);
        pan_aus.setLayout(pan_ausLayout);
        pan_ausLayout.setHorizontalGroup(
            pan_ausLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, pan_ausLayout.createSequentialGroup()
                .addGap(30, 30, 30)
                .addGroup(pan_ausLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(pan_ausLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                        .addGroup(pan_ausLayout.createSequentialGroup()
                            .addGroup(pan_ausLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                .addComponent(lbl_aus_kundennummer, javax.swing.GroupLayout.PREFERRED_SIZE, 120, javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addComponent(lbl_aus_artikelnummer, javax.swing.GroupLayout.PREFERRED_SIZE, 120, javax.swing.GroupLayout.PREFERRED_SIZE))
                            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                            .addGroup(pan_ausLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                .addComponent(txt_aus_artikelnummer, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, 120, javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addComponent(txt_aus_kundennummer, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, 120, javax.swing.GroupLayout.PREFERRED_SIZE)))
                        .addComponent(jScrollPane5, javax.swing.GroupLayout.DEFAULT_SIZE, 290, Short.MAX_VALUE))
                    .addComponent(lbl_aus_kundenliste, javax.swing.GroupLayout.PREFERRED_SIZE, 120, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(50, 50, 50)
                .addGroup(pan_ausLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(pan_ausLayout.createSequentialGroup()
                        .addGroup(pan_ausLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(jScrollPane2, javax.swing.GroupLayout.DEFAULT_SIZE, 318, Short.MAX_VALUE)
                            .addGroup(pan_ausLayout.createSequentialGroup()
                                .addGroup(pan_ausLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
                                    .addComponent(lbl_aus_geburtsdatum, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                                    .addComponent(lbl_aus_nachname, javax.swing.GroupLayout.DEFAULT_SIZE, 134, Short.MAX_VALUE))
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addGroup(pan_ausLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                    .addGroup(pan_ausLayout.createSequentialGroup()
                                        .addComponent(txt_aus_gebdatum, javax.swing.GroupLayout.PREFERRED_SIZE, 80, javax.swing.GroupLayout.PREFERRED_SIZE)
                                        .addGap(0, 0, Short.MAX_VALUE))
                                    .addComponent(txt_aus_name))))
                        .addGap(65, 65, 65)
                        .addGroup(pan_ausLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(but_aus_suchen, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, 120, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(but_aus_ausleihen, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, 120, javax.swing.GroupLayout.PREFERRED_SIZE)))
                    .addGroup(pan_ausLayout.createSequentialGroup()
                        .addComponent(lbl_aus_medienliste, javax.swing.GroupLayout.PREFERRED_SIZE, 120, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                        .addComponent(but_aus_zurueck, javax.swing.GroupLayout.PREFERRED_SIZE, 120, javax.swing.GroupLayout.PREFERRED_SIZE)))
                .addGap(30, 30, 30))
        );
        pan_ausLayout.setVerticalGroup(
            pan_ausLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(pan_ausLayout.createSequentialGroup()
                .addGap(40, 40, 40)
                .addGroup(pan_ausLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(lbl_aus_kundennummer, javax.swing.GroupLayout.PREFERRED_SIZE, 30, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(txt_aus_kundennummer, javax.swing.GroupLayout.PREFERRED_SIZE, 30, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(lbl_aus_nachname, javax.swing.GroupLayout.PREFERRED_SIZE, 30, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(txt_aus_name, javax.swing.GroupLayout.PREFERRED_SIZE, 30, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(but_aus_ausleihen, javax.swing.GroupLayout.PREFERRED_SIZE, 30, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(30, 30, 30)
                .addGroup(pan_ausLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(lbl_aus_geburtsdatum, javax.swing.GroupLayout.PREFERRED_SIZE, 30, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(txt_aus_gebdatum, javax.swing.GroupLayout.PREFERRED_SIZE, 30, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(lbl_aus_artikelnummer, javax.swing.GroupLayout.PREFERRED_SIZE, 30, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(txt_aus_artikelnummer, javax.swing.GroupLayout.PREFERRED_SIZE, 30, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(but_aus_suchen, javax.swing.GroupLayout.PREFERRED_SIZE, 30, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(30, 30, 30)
                .addGroup(pan_ausLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                    .addGroup(pan_ausLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                        .addComponent(lbl_aus_kundenliste)
                        .addComponent(lbl_aus_medienliste))
                    .addComponent(but_aus_zurueck, javax.swing.GroupLayout.PREFERRED_SIZE, 30, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(4, 4, 4)
                .addGroup(pan_ausLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                    .addComponent(jScrollPane2, javax.swing.GroupLayout.DEFAULT_SIZE, 296, Short.MAX_VALUE)
                    .addComponent(jScrollPane5))
                .addContainerGap(40, Short.MAX_VALUE))
        );

        tab_aus_rueck.addTab("Ausleihen", pan_aus);

        lbl_rueck_kundennummer.setText("Kundennummer:");

        txt_rueck_kundennummer.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                txt_rueck_kundennummerActionPerformed(evt);
            }
        });

        lbl_rueck_name.setText("Vor- und Nachname:");

        lbl_rueck_gebdatum.setText("Geburtsdatum:");

        but_rueck_rueckgabe.setText("Rückgabe");
        but_rueck_rueckgabe.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                but_rueck_rueckgabeMouseClicked(evt);
            }
        });

        list_rueck_kundenliste.setModel(new KundeListModel(kml));
        list_rueck_kundenliste.addListSelectionListener(new javax.swing.event.ListSelectionListener() {
            public void valueChanged(javax.swing.event.ListSelectionEvent evt) {
                list_rueck_kundenlisteValueChanged(evt);
            }
        });
        jScrollPane3.setViewportView(list_rueck_kundenliste);

        list_rueck_medienliste.setModel(new MediaListModel(list));
        jScrollPane4.setViewportView(list_rueck_medienliste);

        but_rueck_suchen.setText("Suchen Knr.");
        but_rueck_suchen.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                but_rueck_suchenMouseClicked(evt);
            }
        });

        but_rueck_zurueck.setText("Zurück");
        but_rueck_zurueck.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                but_rueck_zurueckMouseClicked(evt);
            }
        });

        lbl_rueck_kundenliste.setText("Kundenliste:");

        lbl_rueck_medienliste.setText("Medienliste:");

        jLabel1.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N
        jLabel1.setText("Enter zum Filtern");

        javax.swing.GroupLayout pan_rueckLayout = new javax.swing.GroupLayout(pan_rueck);
        pan_rueck.setLayout(pan_rueckLayout);
        pan_rueckLayout.setHorizontalGroup(
            pan_rueckLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(pan_rueckLayout.createSequentialGroup()
                .addGap(30, 30, 30)
                .addGroup(pan_rueckLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(pan_rueckLayout.createSequentialGroup()
                        .addComponent(lbl_rueck_kundennummer, javax.swing.GroupLayout.PREFERRED_SIZE, 120, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(50, 50, 50)
                        .addGroup(pan_rueckLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                            .addComponent(txt_rueck_kundennummer, javax.swing.GroupLayout.DEFAULT_SIZE, 120, Short.MAX_VALUE)
                            .addComponent(jLabel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))
                    .addComponent(jScrollPane3, javax.swing.GroupLayout.PREFERRED_SIZE, 290, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(lbl_rueck_kundenliste, javax.swing.GroupLayout.PREFERRED_SIZE, 120, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(50, 50, 50)
                .addGroup(pan_rueckLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                    .addComponent(lbl_rueck_medienliste, javax.swing.GroupLayout.PREFERRED_SIZE, 120, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jScrollPane4, javax.swing.GroupLayout.PREFERRED_SIZE, 318, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addGroup(pan_rueckLayout.createSequentialGroup()
                        .addGroup(pan_rueckLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
                            .addComponent(lbl_rueck_name, javax.swing.GroupLayout.DEFAULT_SIZE, 134, Short.MAX_VALUE)
                            .addComponent(lbl_rueck_gebdatum, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addGroup(pan_rueckLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(txt_rueck_gebdatum, javax.swing.GroupLayout.PREFERRED_SIZE, 80, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(txt_rueck_name))))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 65, Short.MAX_VALUE)
                .addGroup(pan_rueckLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(but_rueck_suchen, javax.swing.GroupLayout.PREFERRED_SIZE, 120, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(but_rueck_rueckgabe, javax.swing.GroupLayout.PREFERRED_SIZE, 120, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(but_rueck_zurueck, javax.swing.GroupLayout.PREFERRED_SIZE, 120, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(30, 30, 30))
        );
        pan_rueckLayout.setVerticalGroup(
            pan_rueckLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(pan_rueckLayout.createSequentialGroup()
                .addGap(39, 39, 39)
                .addGroup(pan_rueckLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(lbl_rueck_kundennummer, javax.swing.GroupLayout.PREFERRED_SIZE, 30, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(txt_rueck_kundennummer, javax.swing.GroupLayout.PREFERRED_SIZE, 30, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(lbl_rueck_name, javax.swing.GroupLayout.PREFERRED_SIZE, 30, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(txt_rueck_name, javax.swing.GroupLayout.PREFERRED_SIZE, 30, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(but_rueck_rueckgabe, javax.swing.GroupLayout.PREFERRED_SIZE, 30, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jLabel1)
                .addGap(11, 11, 11)
                .addGroup(pan_rueckLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(lbl_rueck_gebdatum, javax.swing.GroupLayout.PREFERRED_SIZE, 30, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(txt_rueck_gebdatum, javax.swing.GroupLayout.PREFERRED_SIZE, 30, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(but_rueck_suchen, javax.swing.GroupLayout.PREFERRED_SIZE, 30, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(30, 30, 30)
                .addGroup(pan_rueckLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                    .addGroup(pan_rueckLayout.createSequentialGroup()
                        .addComponent(but_rueck_zurueck, javax.swing.GroupLayout.PREFERRED_SIZE, 30, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(300, 300, 300))
                    .addGroup(pan_rueckLayout.createSequentialGroup()
                        .addGroup(pan_rueckLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(lbl_rueck_medienliste)
                            .addComponent(lbl_rueck_kundenliste))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addGroup(pan_rueckLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                            .addComponent(jScrollPane4, javax.swing.GroupLayout.DEFAULT_SIZE, 296, Short.MAX_VALUE)
                            .addComponent(jScrollPane3))))
                .addContainerGap(41, Short.MAX_VALUE))
        );

        tab_aus_rueck.addTab("Rückgabe", pan_rueck);

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(tab_aus_rueck)
                .addContainerGap())
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(tab_aus_rueck)
        );

        pack();
    }// </editor-fold>//GEN-END:initComponents
/**
 * Ermöglicht das Ausleihen eines Mediums und prüft Eingaben und Sonderfälle
 * @param evt MouseClicked
 */
    private void but_aus_ausleihenMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_but_aus_ausleihenMouseClicked
        
        Medium m = (Medium) list_aus_medienliste.getSelectedValue();
        Kunde k = (Kunde) list_aus_kundenliste.getSelectedValue();
        RueckgabeAusleihe ra = new RueckgabeAusleihe();
        List<Kunde> allCustomers = kv.anzeigen();
        List<Medium> allMediums = mv.getListe();
        List<Kunde> zwSpk = new ArrayList<Kunde>();
        List<Kunde> zwSpk2 = new ArrayList<Kunde>();
        List<Medium> zwSpm = new ArrayList<Medium>();
        
        //Prüft, ob Kundenliste + Medienliste gewählt und zusätzlich Artikelnummer und Kundennummer eingegeben wurden, gibt Fehlerfenster aus
        if(m != null && k != null && Integer.valueOf(txt_aus_kundennummer.getText().compareTo("")) != 0
           && Integer.valueOf(txt_aus_artikelnummer.getText().compareTo("")) != 0){
                Fehler_Auswahl faa = new Fehler_Auswahl();
                faa.setVisible(true);
                txt_aus_artikelnummer.setText("");
                txt_aus_kundennummer.setText("");
                list = mv.getListe();
                list_aus_medienliste.setModel(new MediaListModel(list));
                kml = kv.anzeigen();
                list_aus_kundenliste.setModel(new KundeListModel(kml));
        }
        //Prüft, ob Kundenliste + Medienliste gewählt und zusätzlich eine Artikelnummer eingegeben wurde, gibt Fehlerfenster aus 
        else if(m != null && k != null && Integer.valueOf(txt_aus_artikelnummer.getText().compareTo("")) != 0){
                Fehler_Auswahl fa1 = new Fehler_Auswahl();
                fa1.setVisible(true);
                txt_aus_artikelnummer.setText("");
                list = mv.getListe();
                list_aus_medienliste.setModel(new MediaListModel(list));
                kml = kv.anzeigen();
                list_aus_kundenliste.setModel(new KundeListModel(kml)); 
        }
        //Prüft, ob Kunden-/Medienliste gewählt und zusätzlich eine Kundennummer eingegeben wurde, gibt Fehlerfenster aus
        else if(m != null && k != null && Integer.valueOf(txt_aus_kundennummer.getText().compareTo("")) != 0){
                Fehler_Auswahl fa2 = new Fehler_Auswahl();
                fa2.setVisible(true);
                txt_aus_kundennummer.setText("");
                list = mv.getListe();
                list_aus_medienliste.setModel(new MediaListModel(list));
                kml = kv.anzeigen();
                list_aus_kundenliste.setModel(new KundeListModel(kml)); 
        }
        //Prüft, ob Kunden-/Artikelnummer eingegebn wurde und zusätzlich aus Kundenliste gewählt wurde, gibt Fehlerfenster aus
        else if(Integer.valueOf(txt_aus_kundennummer.getText().compareTo("")) != 0 && Integer.valueOf(txt_aus_artikelnummer.getText().compareTo("")) != 0
          && k != null){
                Fehler_Auswahl fa3 = new Fehler_Auswahl();
                fa3.setVisible(true);
                txt_aus_kundennummer.setText("");
                txt_aus_artikelnummer.setText("");
                kml = kv.anzeigen();
                list_aus_kundenliste.setModel(new KundeListModel(kml));
        }
        //Prüft, ob Kunden-/Artikelnummer eingegeben wurde und zusätzlich aus Medienliste gewählt wurde, gibt Fehlerfenster aus
        else if(Integer.valueOf(txt_aus_kundennummer.getText().compareTo("")) != 0 && Integer.valueOf(txt_aus_artikelnummer.getText().compareTo("")) != 0
                && m != null){
                Fehler_Auswahl fa4 = new Fehler_Auswahl();
                fa4.setVisible(true);
                txt_aus_kundennummer.setText("");
                txt_aus_artikelnummer.setText("");
                list = mv.getListe();
                list_aus_medienliste.setModel(new MediaListModel(list));
        }
        /*Prüft, ob Artikelnummer eingegeben und ein Kunde gewählt wurde. Prüft ob Artikelnummer vorhanden und ob Kunde gesperrt ist. Wenn Kunde gesperrt, oder Artikelnummer
          nicht vorhanden ist, wird ein Fehlerfenster ausgegeben. Ansonsten wird das Medium verliehen.*/
        else if (m == null && Integer.valueOf(txt_aus_kundennummer.getText().compareTo("")) == 0 && k != null && Integer.valueOf(txt_aus_artikelnummer.getText()) > 0) {
                    int knrS1 = k.getkundennr();
                    int artNrS1 = Integer.valueOf(txt_aus_artikelnummer.getText());

                    for(Medium ms : allMediums){
                        if(ms.getArtikelnr() == artNrS1)
                            zwSpm.add(ms);
                    }
                
                    if(zwSpm.isEmpty()){
                        Fehler_Ausleihe_Medium fam = new Fehler_Ausleihe_Medium();
                        fam.setVisible(true);
                        txt_aus_artikelnummer.setText("");
                    }
                
                    else{
                        if (k.getsperrStatus() == false) {
                            ra.ausleihen(artNrS1, knrS1);
                            txt_aus_artikelnummer.setText("");
                            list = mv.getListe();
                            list_aus_medienliste.setModel(new MediaListModel(list));
                            kml = kv.anzeigen();
                            list_aus_kundenliste.setModel(new KundeListModel(kml));
                        } 
                
                        else{
                            Fehler_Gesperrt fg = new Fehler_Gesperrt();
                            fg.setVisible(true);
                            txt_aus_artikelnummer.setText("");
                            list = mv.getListe();
                            list_aus_medienliste.setModel(new MediaListModel(list));
                            kml = kv.anzeigen();
                            list_aus_kundenliste.setModel(new KundeListModel(kml));
                        }
                        zwSpm.clear();
                    }
            }
            /*Prüft, ob Medium gewählt und Kundennummer eingegeben wurde. Prüft, ob Kundennummer vorhanden und ob Kunde gesperrt. Wenn ja, wird ein Fehlerfenster ausgegeben,
              ansonsten wird das Medium verliehen.*/
            else if (k == null && Integer.valueOf(txt_aus_artikelnummer.getText().compareTo("")) == 0 && m != null && Integer.valueOf(txt_aus_kundennummer.getText()) > 0) {
                    int knrS2 = Integer.valueOf(txt_aus_kundennummer.getText());
                    int artNrS2 = m.getArtikelnr();
            
                    for(Kunde ks : allCustomers){
                        if(ks.getkundennr() == knrS2){
                            zwSpk.add(ks);
                        }
                    }
            
                    if(zwSpk.isEmpty()){
                        Fehler_Rueck_Kunde frk = new Fehler_Rueck_Kunde();
                        frk.setVisible(true);
                        txt_aus_kundennummer.setText("");
                
                    }
            
                    else{
                        for (Kunde kS2 : zwSpk) {
                            if (kS2.getsperrStatus() == true){
                                zwSpk2.add(kS2);
                            }
                        }
                
                        if(zwSpk2.isEmpty()){
                            ra.ausleihen(artNrS2, knrS2);
                            txt_aus_kundennummer.setText("");
                            list = mv.getListe();
                            list_aus_medienliste.setModel(new MediaListModel(list));
                            kml = kv.anzeigen();
                            list_aus_kundenliste.setModel(new KundeListModel(kml));
                        }
                
                        else{
                            Fehler_Gesperrt fgS2 = new Fehler_Gesperrt();
                            fgS2.setVisible(true);
                            list = mv.getListe();
                            list_aus_medienliste.setModel(new MediaListModel(list));
                            kml = kv.anzeigen();
                            list_aus_kundenliste.setModel(new KundeListModel(kml));
                        } 
                    }
                    zwSpk.clear();
                    zwSpk2.clear();
            }  

            else{
                try{
                    //Prüft, Variationsmöglichkeiten für Kundenummer und Artikelnummer. Prüft, ob beides vorhanden ist.
                    if(Integer.valueOf(txt_aus_kundennummer.getText()) > 0 && Integer.valueOf(txt_aus_artikelnummer.getText()) > 0
                       || Integer.valueOf(txt_aus_kundennummer.getText()) <= 0 && Integer.valueOf(txt_aus_artikelnummer.getText()) <= 0
                       || Integer.valueOf(txt_aus_kundennummer.getText()) <= 0 && Integer.valueOf(txt_aus_artikelnummer.getText()) > 0
                       || Integer.valueOf(txt_aus_kundennummer.getText()) > 0 && Integer.valueOf(txt_aus_artikelnummer.getText()) <= 0){
                        
                            for(Medium msearch : allMediums){
                                if(msearch.getArtikelnr() == Integer.valueOf(txt_aus_artikelnummer.getText())){
                                    zwSpm.add(msearch);
                                }   
                            }
                
                            for(Kunde ksearch : allCustomers){
                                if(ksearch.getkundennr() == Integer.valueOf(txt_aus_kundennummer.getText())){
                                    zwSpk.add(ksearch);
                                }
                            }
                
                            boolean zwSpkbool = zwSpk.isEmpty();
                            boolean zwSpmbool = zwSpm.isEmpty();
                            //Prüft, ob beides <= 0 und gibt Hinweise in Textfeldern aus.
                            if(Integer.valueOf(txt_aus_kundennummer.getText()) <= 0 && Integer.valueOf(txt_aus_artikelnummer.getText()) <= 0){
                                txt_aus_kundennummer.setText("KNr. > 0");
                                txt_aus_artikelnummer.setText("ArtNr. > 0");
                            }
                            
                            else{
                                //Prüft, ob Artikelnummer nicht vorhanden und Kundennummer <= 0. Gibt Fehlerfenster und Hinweise aus.
                                if(zwSpmbool == true && Integer.valueOf(txt_aus_kundennummer.getText()) <= 0){
                                    Fehler_Ausleihe_Medium fam = new Fehler_Ausleihe_Medium();
                                    fam.setVisible(true);
                                    txt_aus_artikelnummer.setText("");
                                    txt_aus_kundennummer.setText("KNr. > 0");
                                    zwSpm.clear();
                                }
                                //Prüft, ob Kundennummer nicht vorhanden und Artikelnummer <=0. Gibt Fehlerfenster und Hinweise aus.
                                else if(zwSpkbool == true && Integer.valueOf(txt_aus_artikelnummer.getText()) <= 0){
                                    Fehler_Rueck_Kunde frk = new Fehler_Rueck_Kunde();
                                    frk.setVisible(true);
                                    txt_aus_kundennummer.setText("");
                                    txt_aus_artikelnummer.setText("ArtNr. > 0");
                                    zwSpk.clear();
                                }
                                //Prüft, ob beides nicht vorhanden und gibt Fehlerfenster aus.
                                else if(zwSpkbool == true && zwSpmbool == true){
                                    Fehler_KNR_ARNR fka = new Fehler_KNR_ARNR();
                                    fka.setVisible(true);
                                    txt_aus_artikelnummer.setText("");
                                    txt_aus_kundennummer.setText("");  
                                }
                                //Prüft, ob Kundennummer vorhanden und Artikelnummer <= 0. Gibt Hinweis aus.
                                else if(zwSpkbool == false && Integer.valueOf(txt_aus_artikelnummer.getText()) <= 0){
                                    txt_aus_artikelnummer.setText("ArtNr. > 0");
                                }
                                //Prüft, ob Artikelnummer vorhanden und Kundennumemr <= 0. Gibt Hinweis aus
                                else if(zwSpmbool == false && Integer.valueOf(txt_aus_kundennummer.getText()) <= 0){
                                    txt_aus_kundennummer.setText("KNr. > 0");
                                }
                                //Prüft, ob Artikelnnummer vorhanden und Kundennummer nicht. Gibt Fehlerfenster aus
                                else if(zwSpmbool == false && zwSpkbool == true){
                                    Fehler_Rueck_Kunde frk = new Fehler_Rueck_Kunde();
                                    frk.setVisible(true);
                                    txt_aus_kundennummer.setText("");
                                }
                                //Prüft, ob Kundennummer vorhanden und Artikelnummer nicht. Gibt Fehlerfenster aus
                                else if(zwSpkbool == false && zwSpmbool == true){
                                    Fehler_Ausleihe_Medium fam = new Fehler_Ausleihe_Medium();
                                    fam.setVisible(true);
                                    txt_aus_artikelnummer.setText("");
                                }
                                //Prüft, ob Artikelnummer + Kundennummer vorhanden. Prüft ob Kunde gesperrt ist und gibt bei true Fehlerfenster aus. Ansonsten wird das Medium verliehen. 
                                else if(zwSpmbool == false && zwSpkbool == false){
                                        if(Integer.valueOf(txt_aus_kundennummer.getText().compareTo("")) > 0 && Integer.valueOf(txt_aus_artikelnummer.getText().compareTo("")) > 0){
                                            int knrTxt = Integer.valueOf(txt_aus_kundennummer.getText());
                                            int artnrTxt = Integer.valueOf(txt_aus_artikelnummer.getText());
                                            boolean sperr = false;
                        
                                            for (Kunde akt : allCustomers){
                                                if(akt.getkundennr() == knrTxt){
                                                    sperr = akt.getsperrStatus();
                                                }
                                            }
                        
                                            if(sperr == true){
                                                Fehler_Gesperrt fg = new Fehler_Gesperrt();
                                                fg.setVisible(true);
                                                txt_aus_artikelnummer.setText("");
                                                txt_aus_kundennummer.setText("");
                                            }
                            
                                            else
                                                ra.ausleihen(artnrTxt, knrTxt);
                                                list = mv.getListe();
                                                list_aus_medienliste.setModel(new MediaListModel(list));
                                                txt_aus_kundennummer.setText("");
                                                txt_aus_artikelnummer.setText("");
                       
                                            }
                                }
                            }
                        }  
                }catch (NumberFormatException nfe0){
                        try{
                            //Prüft, ob Artikelnummer eingegeben wurde und vorhanden ist und Kundennummer nicht eingegeben wurde. Gibt Fehlerfenster + Hinweise aus
                            if(Integer.valueOf(txt_aus_artikelnummer.getText()) >= 0 && Integer.valueOf(txt_aus_kundennummer.getText().compareTo("")) == 0){
                                for(Medium search : allMediums){
                                    if(search.getArtikelnr() == Integer.valueOf(txt_aus_artikelnummer.getText())){
                                        zwSpm.add(search);
                                    }
                                }
                                
                                if(zwSpm.isEmpty()){
                                    Fehler_Ausleihe_Medium fma = new Fehler_Ausleihe_Medium();
                                    fma.setVisible(true);
                                    txt_aus_artikelnummer.setText("ArtNr. eingeben");
                                    txt_aus_kundennummer.setText("KNr. eingeben");
                                }
                    
                                else{
                                    txt_aus_kundennummer.setText("KNr. eingeben");
                                }
                                zwSpm.clear();
                            }
        
                        }catch(NumberFormatException nfe){
                                try{
                                    //Prüft, ob Kundennummer eingegeben wurde und vorhanden ist und Artikelnummer leer ist. Gibt Fehlerfenster + Hinweise aus
                                    if(Integer.valueOf(txt_aus_kundennummer.getText()) >= 0 && Integer.valueOf(txt_aus_artikelnummer.getText().compareTo("")) == 0){
                                        for(Kunde search : allCustomers){
                                            if(search.getkundennr() == Integer.valueOf(txt_aus_kundennummer.getText())){
                                                zwSpk.add(search);
                                            }
                                        }
                    
                                        if(zwSpk.isEmpty()){
                                            Fehler_Rueck_Kunde frk = new Fehler_Rueck_Kunde();
                                            frk.setVisible(true);
                                            txt_aus_kundennummer.setText("KNr. eingeben");
                                            txt_aus_artikelnummer.setText("ArNr. eingeben"); 
                                        }
                    
                                        else{
                                            txt_aus_artikelnummer.setText("ArtNr. eingeben");
                                        }
                                        zwSpk.clear();
                                    }
                                }catch(NumberFormatException nfe1){
                                        //Wenn nur bei Kundennummer Buchstaben eingegeben werden, wird ein Hinweis ausgegeben.
                                        if(m == null && k == null && txt_aus_kundennummer.getText().compareTo("") != 0 && txt_aus_artikelnummer.getText().compareTo("") == 0){
                                            txt_aus_kundennummer.setText("Format");
                                        }
                                        //Wenn nur bei Artikelnummer Buchstaben eingegeben werden, wird ein Hinweis ausgegeben.
                                        else if(m == null && k == null && txt_aus_kundennummer.getText().compareTo("") == 0 && txt_aus_artikelnummer.getText().compareTo("") != 0){
                                            txt_aus_artikelnummer.setText("Format");
                                        }
                                        //Wenn bei Artikel-/Kundennummer Buchstaben eingegeben werden, wird ein Hinweis in beiden Feldern ausgegeben.
                                        else if(m == null && k == null && txt_aus_kundennummer.getText().compareTo("") != 0 && txt_aus_artikelnummer.getText().compareTo("") != 0){
                                            txt_aus_artikelnummer.setText("Format");
                                            txt_aus_kundennummer.setText("Format");
                                        }
                                        
                                        /*Prüft, ob Kunde und Medium gewählt wurden. Prüft, ob Kunde gesperrt und gibt wenn ja, ein Fehlerfenster aus.
                                          Wenn Kunde nicht gesperrt, dann wird das Medium verliehen*/
                                        else if (m == null && k == null && txt_aus_kundennummer.getText().compareTo("") == 0
                                                 && txt_aus_artikelnummer.getText().compareTo("") == 0){
                                                    txt_aus_artikelnummer.setText("ArtNr. eingeben");
                                                    txt_aus_kundennummer.setText("KNr. eingeben");
                                        }
        
                                        else if (m != null && k != null) {
                                            int knr = k.getkundennr();
                                            int artnr = m.getArtikelnr();

                                            if (k.getsperrStatus() == false) {
                                                ra.ausleihen(artnr, knr);
                                                list = mv.getListe();
                                                list_aus_medienliste.setModel(new MediaListModel(list));
                                                kml = kv.anzeigen();
                                                list_aus_kundenliste.setModel(new KundeListModel(kml));
                                            }
                                        }
                                    
                                        else{
                                            Fehler_Gesperrt fg = new Fehler_Gesperrt();
                                            fg.setVisible(true);
                                            list = mv.getListe();
                                            list_aus_medienliste.setModel(new MediaListModel(list));
                                            kml = kv.anzeigen();
                                            list_aus_kundenliste.setModel(new KundeListModel(kml));
                                        }
                                }   
                        }
                }
            }
    }//GEN-LAST:event_but_aus_ausleihenMouseClicked
/**
 * Schließt, im Ausleihentab das Ausleihen-/Rückgabefenster
 * @param evt = MouseClicked
 */
    private void but_aus_zurueckMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_but_aus_zurueckMouseClicked

        dispose();
    }//GEN-LAST:event_but_aus_zurueckMouseClicked
/**
 * Sucht nach der Kundennummer im Ausleihentab, anhand des Namens und des Geburtsdatums
 * Prüft, ob nötige Eingaben vorhanden und richtig sind.
 * Gibt bei nicht vorhandener Kundennummer ein Fehlerfenster aus.
 * Ergänzt die Kundennummer im Kundennummerntextfeld.
 * @param evt = MouseClicked
 */
    private void but_aus_suchenMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_but_aus_suchenMouseClicked

        List<Kunde> allCustomers = kv.anzeigen();
        List<Kunde> search = new ArrayList<Kunde>();
        String name = txt_aus_name.getText();
        String datum = txt_aus_gebdatum.getText();

        if(name.compareTo("") == 0 && datum.compareTo("") == 0){
            txt_aus_name.setText("Name eingeben");
            txt_aus_gebdatum.setText("Eingabe");
        }
        else if(name.compareTo("") == 0 && datum.compareTo("") != 0){
            txt_aus_name.setText("Name eingeben");
        }
        else if(name.compareTo("") != 0 && datum.compareTo("") == 0){
            txt_aus_gebdatum.setText("Eingabe");
        }
        else{
            try{
                Date gebD = sdf.parse(datum);
        
                for (Kunde k : allCustomers) {
                    if (k.getName().compareTo(name) == 0 && k.getGeburtsdatum().compareTo(gebD) == 0) {
                        search.add(k);
                    }
                }
       
                if(search.isEmpty()){
                    Fehler_Aus_Rueck_Kunde fark = new Fehler_Aus_Rueck_Kunde();
                    fark.setVisible(true);
                }
                else
                    for(Kunde ksearch : search){
                        txt_aus_kundennummer.setText(String.valueOf(ksearch.getkundennr()));
                    }
                    search.clear();
                    txt_aus_name.setText("");
                    txt_aus_gebdatum.setText("");
                
            }catch (ParseException pe){
                txt_aus_gebdatum.setText("Format");
            }
        }
    }//GEN-LAST:event_but_aus_suchenMouseClicked
/**
 * Schließt im Rückgabetab das Ausleihen-/Rückgabefenster
 * @param evt = MouseClicked
 */
    private void but_rueck_zurueckMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_but_rueck_zurueckMouseClicked

        dispose();
    }//GEN-LAST:event_but_rueck_zurueckMouseClicked
/**
 * Sucht nach der Kundennummer im Rückgabetab, anhand des Namens und des Geburtsdatums
 * Prüft, ob nötige Eingaben vorhanden und richtig sind.
 * Gibt bei nicht vorhandener Kundennummer ein Fehlerfenster aus.
 * Ergänzt die Kundennummer im Kundennummerntextfeld.
 * @param evt = MouseClicked
 */
    private void but_rueck_suchenMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_but_rueck_suchenMouseClicked

        List<Kunde> allCustomers = kv.anzeigen();
        List<Kunde> search = new ArrayList<Kunde>();
        String name = txt_rueck_name.getText();
        String datum = txt_rueck_gebdatum.getText();
        
        if(name.compareTo("") == 0 && datum.compareTo("")==0){
            txt_rueck_name.setText("Name eingeben");
            txt_rueck_gebdatum.setText("Eingabe");
        }
        else if(name.compareTo("") == 0 && datum.compareTo("") != 0){
            txt_rueck_name.setText("Name eingeben");
        }
        else if(name.compareTo("") != 0 && datum.compareTo("") == 0){
            txt_rueck_gebdatum.setText("Eingabe");
        }
        else{
            try{
                Date gebD = sdf.parse(datum);
            
                for (Kunde k : allCustomers) {
                    if (k.getName().compareTo(name) == 0 && k.getGeburtsdatum().compareTo(gebD) == 0) {
                        search.add(k);
                    }
                }
                if(search.isEmpty()){
                    Fehler_Aus_Rueck_Kunde fark = new Fehler_Aus_Rueck_Kunde();
                    fark.setVisible(true);
                }    
                else
                    for(Kunde ksearch : search){
                        txt_rueck_kundennummer.setText(String.valueOf(ksearch.getkundennr()));
                    }
                    txt_rueck_name.setText("");
                    txt_rueck_gebdatum.setText("");
                
            }catch (ParseException pe2){
                txt_rueck_gebdatum.setText("Format");
            }
        }search.clear();
    }//GEN-LAST:event_but_rueck_suchenMouseClicked
/**
 * Ermöglicht die Rückgabe eines Mediums und prüft Eingaben und Sonderfälle
 * @param evt = MouseClicked
 */
    private void but_rueck_rueckgabeMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_but_rueck_rueckgabeMouseClicked

        Medium m = (Medium) list_rueck_medienliste.getSelectedValue();
        Kunde k = (Kunde) list_rueck_kundenliste.getSelectedValue();
        List<Kunde> allCustomers = kv.anzeigen();
        List<Medium> allMediums = mv.getListe();
        List<Kunde> kzwSp = new ArrayList<Kunde>();
        List<Medium> mzwSp = new ArrayList<Medium>();
        RueckgabeAusleihe rue = new RueckgabeAusleihe();
        
        try{
            try{
                //Prüft, ob Kundenliste + Medienliste gewählt und zusätzlich eine Kundennummer eingegeben wurde. Gibt Fehlerfenster aus.
                if(m != null && k != null && txt_rueck_kundennummer.getText().compareTo("") != 0){
                    Fehler_Rueck_Auswahl_Rueck frar = new Fehler_Rueck_Auswahl_Rueck();
                    frar.setVisible(true);
                    txt_rueck_kundennummer.setText("");
                    list = mv.getListe();
                    list_rueck_medienliste.setModel(new MediaListModel(list));
                    kml = kv.anzeigen();
                    list_rueck_kundenliste.setModel(new KundeListModel(kml));
                }
                //Prüft, ob Kundenliste + Medienliste gewählt wurde und ob die Kundennummer mit der Kundennummer im Medium übereinstimmt. Rückgabe möglich.
                else if(m != null && k != null && m.getausgeliehen() == k.getkundennr()){
                    rue.rueckgabe(m.getArtikelnr(), k.getkundennr());
                    list = mv.getListe();
                    list_rueck_medienliste.setModel(new MediaListModel(list));
                    kml = kv.anzeigen();
                    list_rueck_kundenliste.setModel(new KundeListModel(kml)); 
                }
                //Prüft, ob Kundenliste + Medienliste gewählt und ob die Kundennummer mit der Kundennummer im Medium übereinstimmt. Gibt Fehlerfenster aus.
                else if(m != null && k != null && m.getausgeliehen() != k.getkundennr()){
                     Fehler_Rueck_Falsch frf = new Fehler_Rueck_Falsch();
                     frf.setVisible(true);
                     list = mv.getListe();
                     list_rueck_medienliste.setModel(new MediaListModel(list)); 
                     kml = kv.anzeigen();
                     list_rueck_kundenliste.setModel(new KundeListModel(kml));
                }
                //Prüft, ob Kundenliste gewählt und ob Kundennummer mit gewähltem Kunden übereinstimmt. Wenn nein, Fehlerfenster.
                 else if(k != null && Integer.valueOf(txt_rueck_kundennummer.getText()) != Integer.valueOf(k.getkundennr())){ 
                    Fehler_Rueck_Kundennummer frk = new Fehler_Rueck_Kundennummer();
                    frk.setVisible(true);
                    txt_rueck_kundennummer.setText("");
                    kml = kv.anzeigen();
                    list_rueck_kundenliste.setModel(new KundeListModel(kml)); 
                }
                
                else{
                    //Prüft, ob Kundennummer eingegeben wurde. Gibt Hinweis aus.
                    if(Integer.valueOf(txt_rueck_kundennummer.getText().compareTo("")) == 0){
                        txt_rueck_kundennummer.setText("KNr. eingeben");
                    }
                    //Prüft, ob Kundennumemr <= 0. Gibt Hinweis aus.
                    else if(Integer.valueOf(txt_rueck_kundennummer.getText()) <= 0){
                        txt_rueck_kundennummer.setText("KNr. > 0");
                    }
                    /*Prüft, ob Kundennummer > 0 und prüft, ob Kundennummer vorhanden. Wenn nicht Fehlerfenster, ansonsten wird geprüft, ob Kundennummer
                      mit einer Kundennummer im Medium übereinstimmt. Wenn nicht, hat Kunde nichts ausgeliehen.*/
                    else if(Integer.valueOf(txt_rueck_kundennummer.getText()) > 0){
                        for(Kunde ks : allCustomers){
                            if(ks.getkundennr() == Integer.valueOf(txt_rueck_kundennummer.getText())){
                                kzwSp.add(ks);
                            }
                        }
                        if(kzwSp.isEmpty()){
                            Fehler_Rueck_Kunde frk = new Fehler_Rueck_Kunde();
                            frk.setVisible(true);
                            txt_rueck_kundennummer.setText("");
                        }
                        else{
                            for(Medium ms : allMediums){
                                if(ms.getausgeliehen() == Integer.valueOf(txt_rueck_kundennummer.getText())){
                                    mzwSp.add(ms);
                                }
                            }
                            if(mzwSp.isEmpty()){
                                Fehler_Rueck_Medium frm = new Fehler_Rueck_Medium();
                                frm.setVisible(true);
                                txt_rueck_kundennummer.setText("");
                                list = mv.getListe();
                                list_rueck_medienliste.setModel(new MediaListModel(list));
                            }
                            else{
                                // Wenn kein Medium gewählt wurde zur Kundennummer. Fehlerfenster
                                if(Integer.valueOf(txt_rueck_kundennummer.getText()) > 0 && m == null){
                                    Fehler_Rueck_Auswahl fra = new Fehler_Rueck_Auswahl();
                                    fra.setVisible(true);
                                }
                                //Wenn Kundennummer nicht mit Kundennummer im Medium übereinstimmt. Fehlerfenster.
                                else if(Integer.valueOf(txt_rueck_kundennummer.getText()) != m.getausgeliehen()){
                                    Fehler_Rueck_Falsch frf = new Fehler_Rueck_Falsch();
                                    frf.setVisible(true);
                                    list = mv.getListe();
                                    list_rueck_medienliste.setModel(new MediaListModel(list));
                                }
                                //Wenn doch, dann kann Medium zurückgegeben werden
                                else if(Integer.valueOf(txt_rueck_kundennummer.getText()) == m.getausgeliehen()){
                                    int knr = Integer.valueOf(txt_rueck_kundennummer.getText());
                                    int artnr = m.getArtikelnr();
                            
                                    rue.rueckgabe(artnr, knr);
                                    list = mv.getListe();
                                    list_rueck_medienliste.setModel(new MediaListModel(list));
                                    txt_rueck_kundennummer.setText("");
                                }
                            }
                        }mzwSp.clear();
                    }
                    kzwSp.clear();
                }
            }catch (NullPointerException npe){
                txt_rueck_kundennummer.setText(""); 
            }
        }catch(NumberFormatException nfe){
            txt_rueck_kundennummer.setText("Format");
            list = mv.getListe();
            list_rueck_medienliste.setModel(new MediaListModel(list)); 
        }
    }//GEN-LAST:event_but_rueck_rueckgabeMouseClicked
/**
 * Aktualisiert beim Wechseln der Tabs die Listen und setzt Eingaben auf leer zurück.
 * @param evt MousClicked
 */
    private void tab_aus_rueckMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_tab_aus_rueckMouseClicked
        
        list = mv.getListe();
        list_aus_medienliste.setModel(new MediaListModel(list));
        list_rueck_medienliste.setModel(new MediaListModel(list));
        kml = kv.anzeigen();
        list_aus_kundenliste.setModel(new KundeListModel(kml));
        list_rueck_kundenliste.setModel(new KundeListModel(kml));
        txt_aus_name.setText("");
        txt_aus_gebdatum.setText("");
        txt_aus_kundennummer.setText("");
        txt_aus_artikelnummer.setText("");
        txt_rueck_kundennummer.setText("");
        txt_rueck_name.setText("");
        txt_rueck_gebdatum.setText("");
    }//GEN-LAST:event_tab_aus_rueckMouseClicked
/**
 * Aktualisiert die Medienliste im Rückgabetab so, dass immer die ausgeliehenen Medien zum entsprechenden Kunden aus Kundenliste angezeigt werden.
 * @param evt MouseClicked in Kundenliste/Rückgabetab
 */
    private void list_rueck_kundenlisteValueChanged(javax.swing.event.ListSelectionEvent evt) {//GEN-FIRST:event_list_rueck_kundenlisteValueChanged
        
        Kunde k = (Kunde) list_rueck_kundenliste.getSelectedValue(); 
        int knr = k.getkundennr();
        list_rueck_medienliste.setModel(new MediaListModel(rueckfilter(knr)));
    }//GEN-LAST:event_list_rueck_kundenlisteValueChanged
/**
 * Bei drücken der Entertaste, wird Liste so angepasst, dass nur die ausgeliehenen Medien zu dieser Kundennummer angezeigt werden.
 * @param evt Entertaste/Rückgabe/Kundennummer
 */
    private void txt_rueck_kundennummerActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_txt_rueck_kundennummerActionPerformed
        
        List<Medium> allMediums = mv.getListe();
        List<Medium> zwSpm = new ArrayList<Medium>();
        List<Kunde> allCustomers = kv.anzeigen();
        List<Kunde> zwSpk = new ArrayList<Kunde>();
        Kunde ks = (Kunde) list_rueck_kundenliste.getSelectedValue();
        
        if(Integer.valueOf(txt_rueck_kundennummer.getText().compareTo("")) == 0){
            txt_rueck_kundennummer.setText("Knr. eingeben");
        }
        else{
            try{
                if(Integer.valueOf(txt_rueck_kundennummer.getText()) <= 0){
                    txt_rueck_kundennummer.setText("ArtNr. > 0");
                }
                //Prüft, ob gewählter Kunde mit eingegebener Kundennummer übereinstimmt. Fehlerfenster
                else if(ks != null && Integer.valueOf(txt_rueck_kundennummer.getText()) != Integer.valueOf(ks.getkundennr())){ 
                        Fehler_Rueck_Kundennummer frk = new Fehler_Rueck_Kundennummer();
                        frk.setVisible(true);
                        txt_rueck_kundennummer.setText("");
                        kml = kv.anzeigen();
                        list_rueck_kundenliste.setModel(new KundeListModel(kml)); 
                }
                /*Prüft, ob Kundennummer vorhanden. Wenn Nein, dann Fehlerfenster. Ansonsten prüfen, ob Medienkundennummer mit Kundennummer übereinstimmt.
                  Wenn nein, dann Fehlerfenster, sonst Rückgabe.*/
                else if(Integer.valueOf(txt_rueck_kundennummer.getText()) > 0){
                    for(Kunde k : allCustomers){
                        if(k.getkundennr() == Integer.valueOf(txt_rueck_kundennummer.getText())){
                            zwSpk.add(k);
                        }
                    }
                
                    if(zwSpk.isEmpty()){
                        Fehler_Rueck_Kunde frk = new Fehler_Rueck_Kunde();
                        frk.setVisible(true);
                        txt_rueck_kundennummer.setText("");
                    }
                
                    else{
                        for(Medium m : allMediums){
                            if(m.getausgeliehen() == Integer.valueOf(txt_rueck_kundennummer.getText())){
                                    zwSpm.add(m);
                                }
                        }
                
                        if(zwSpm.isEmpty()){
                            Fehler_Rueck_Medium frm = new Fehler_Rueck_Medium();
                            frm.setVisible(true);
                            txt_rueck_kundennummer.setText("");
                            list = mv.getListe();
                            list_rueck_medienliste.setModel(new MediaListModel(list)); 
                        }
                    
                        else
                            for(Medium mzwSp : zwSpm){
                                list_rueck_medienliste.setModel(new MediaListModel(rueckfilter(mzwSp.getausgeliehen())));
                            }
                    }
                    zwSpm.clear();
                }
                zwSpk.clear();;
            }catch(NumberFormatException nfe){
                txt_rueck_kundennummer.setText("KNr. ungültig");
            }
        }
    }//GEN-LAST:event_txt_rueck_kundennummerActionPerformed

    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        /* Set the Nimbus look and feel */
        //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
        /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
         * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html 
         */
        try {
            for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
                if ("Nimbus".equals(info.getName())) {
                    javax.swing.UIManager.setLookAndFeel(info.getClassName());
                    break;
                }
            }
        } catch (ClassNotFoundException ex) {
            java.util.logging.Logger.getLogger(Aus_RueckGUI.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {
            java.util.logging.Logger.getLogger(Aus_RueckGUI.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
            java.util.logging.Logger.getLogger(Aus_RueckGUI.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (javax.swing.UnsupportedLookAndFeelException ex) {
            java.util.logging.Logger.getLogger(Aus_RueckGUI.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        }
        //</editor-fold>

        /* Create and display the form */
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new Aus_RueckGUI().setVisible(true);
            }
        });
    }
    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton but_aus_ausleihen;
    private javax.swing.JButton but_aus_suchen;
    private javax.swing.JButton but_aus_zurueck;
    private javax.swing.JButton but_rueck_rueckgabe;
    private javax.swing.JButton but_rueck_suchen;
    private javax.swing.JButton but_rueck_zurueck;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JScrollPane jScrollPane2;
    private javax.swing.JScrollPane jScrollPane3;
    private javax.swing.JScrollPane jScrollPane4;
    private javax.swing.JScrollPane jScrollPane5;
    private javax.swing.JLabel lbl_aus_artikelnummer;
    private javax.swing.JLabel lbl_aus_geburtsdatum;
    private javax.swing.JLabel lbl_aus_kundenliste;
    private javax.swing.JLabel lbl_aus_kundennummer;
    private javax.swing.JLabel lbl_aus_medienliste;
    private javax.swing.JLabel lbl_aus_nachname;
    private javax.swing.JLabel lbl_rueck_gebdatum;
    private javax.swing.JLabel lbl_rueck_kundenliste;
    private javax.swing.JLabel lbl_rueck_kundennummer;
    private javax.swing.JLabel lbl_rueck_medienliste;
    private javax.swing.JLabel lbl_rueck_name;
    private javax.swing.JList list_aus_kundenliste;
    private javax.swing.JList list_aus_medienliste;
    private javax.swing.JList list_rueck_kundenliste;
    private javax.swing.JList list_rueck_medienliste;
    private javax.swing.JPanel pan_aus;
    private javax.swing.JPanel pan_rueck;
    private javax.swing.JTabbedPane tab_aus_rueck;
    private javax.swing.JTextField txt_aus_artikelnummer;
    private javax.swing.JTextField txt_aus_gebdatum;
    private javax.swing.JTextField txt_aus_kundennummer;
    private javax.swing.JTextField txt_aus_name;
    private javax.swing.JTextField txt_rueck_gebdatum;
    private javax.swing.JTextField txt_rueck_kundennummer;
    private javax.swing.JTextField txt_rueck_name;
    // End of variables declaration//GEN-END:variables

    
    /**
     * Methode zum Filtern der Medienliste im Rückgabetab, nach der ausgewählten/eingegebenen Kundennummer
     * @param knr
     * @return
     * @author Andreas Konsek
     */
    public List rueckfilter(int knr) {

        List<Medium> list = mv.getListe();
        List<Medium> gefiltert = new ArrayList<Medium>();
        Iterator<Medium> it = list.iterator();
        int zaehler = 0;
        while(it.hasNext())
        {
            Medium m = it.next();
            if(m.getausgeliehen() == knr)
            {
                gefiltert.add(m);
                zaehler++;
            }
        }
        if(zaehler > 0)
        {
            return gefiltert;
        }
        else
        {
            return list;
        }
    }
}
